home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 3 / DOS063.dsk / MARKET EVALUATOR PAK.bas < prev    next >
BASIC Source File  |  2012-02-16  |  10KB  |  158 lines

  1. 1  GOTO 2000
  2. 10  HOME : PRINT "         TREASURY BILL VALUATION": PRINT : PRINT 
  3. 20  INPUT "ENTER FACE AMOUNT ";F: INPUT "ENTER DAYS TO MATURITY ";D: INPUT "ENTER BID QUOTATION (%) ";B
  4. 30  INPUT "ENTER ASK QUOTATION (%) ";A:H = 100 -(B +A)/2 *(D/360):T = F *H/100: HOME 
  5. 50  PRINT "FACE AMOUNT = $";F: PRINT "DAYS TO MATURITY = ";D: PRINT "BID QUOTATION = ";B;"%"
  6. 60  PRINT "ASK QUOTATION = ";A;"%": PRINT : PRINT : PRINT "PRICE PER $100 = $";H: PRINT "TOTAL VALUE = $";T
  7. 70  PRINT : PRINT : PRINT "HIT ANY KEY TO CONTINUE": GET A9$: PRINT A9$: HOME : GOTO 2000
  8. 80  PRINT "        STOCK PORTFOLIO VALUATION ": CLEAR : PRINT : PRINT : PRINT : INPUT "HOW MANY STOCKS IN THE PORTFOLIO? ";N: DIM A(N),B(N),C(N),D(N),E(N): HOME 
  9. 90  FOR I = 1 TO N
  10. 100  PRINT "FOR STOCK ";I;" ";
  11. 110  INPUT "ENTER NUMBER OF SHARES ";A(I)
  12. 120  INPUT "            ENTER ORGINAL PRICE ";B(I)
  13. 130  INPUT "            ENTER CURRENT PRICE ";C(I)
  14. 140  INPUT "            ENTER DIVIDEND ";D(I): HOME 
  15. 150 E(I) = (C(I) -B(I))/B(I) *100:S = S +A(I) *B(I):S1 = S1 +A(I) *C(I):TY = TY +A(I) *D(I)
  16. 160  NEXT I
  17. 170 PC = (S1 -S)/S *100:YD = TY/S1 *100
  18. 180  FOR I = 1 TO N
  19. 190  PRINT "STOCK NUMBER ";I;" % CHANGE = ";E(I)
  20. 200  NEXT I
  21. 210  PRINT "HIT ANY KEY TO CONTINUE": GET A9$: PRINT A9$: HOME : PRINT "   VALUATION OF TOTAL PORTFOLIO": PRINT : PRINT : PRINT : PRINT "ORGNIAL VALUE = $";S
  22. 220  PRINT "CURRENT VALUE = $";S1: PRINT "% CHANGE IN VALUE = ";PC;"%": PRINT "TOTAL YEARLY DIVIDEND = $";TY: PRINT "YEARLY DIVIDEND YIELD = $";YD
  23. 230  PRINT : PRINT : PRINT 
  24. 240  PRINT "HIT ANY KEY TO CONTINUE": GET A9$: PRINT A9$: HOME : CLEAR : GOTO 2000
  25. 500  HOME : PRINT "PUT AND CALL OPTION VALUES": PRINT : PRINT : PRINT : PRINT "KEY A '1' FOR A PUT OR A '0' FOR A CALL": GET Z: PRINT Z: HOME 
  26. 510  INPUT "ENTER STRIKING PRICE FOR OPTION ";TR: INPUT "ENTER PRICE OF UNDERLYING STOCK ";TK: INPUT "ENTER DAYS TO EXPIRATION ";DY
  27. 520  INPUT "ENTER VARIANCE ('-1' IF UNKNOWN) ";V: INPUT "ENTER INTEREST RATE (%) ";R1:R = R1/100: IF V =  -1  THEN  GOSUB 720
  28. 530 T = DY/365:D1 = ( LOG(TK/TR) +(R +.5 *V ^2) *T)/(V *T ^.5)
  29. 540 D2 = ( LOG(TK/TR) +(R -.5 *V ^2) *T)/(V *T ^.5)
  30. 550 Y1 = 1/(1 +.3327 * ABS(D1)):Y2 = 1/(1 +.3327 * ABS(D2))
  31. 560 Q1 = ( EXP( -D1 ^2/2)/ SQR(2 *3.14159)) *(Y1 *(.4362 -.12 *Y1 +.9371 *Y1 ^2))
  32. 570 Q2 = ( EXP( -D2 ^2/2)/ SQR(2 *3.14159)) *(Y2 *(.4362 -.12 *Y2 +.9371 *Y2 ^2))
  33. 580  IF D1 > = 0  THEN  GOTO 600
  34. 590 G1 = Q1: GOTO 610
  35. 600 G1 = 1 -Q1
  36. 610  IF D2 > = 0  THEN  GOTO 630
  37. 620 G2 = Q2: GOTO 640
  38. 630 G2 = 1 -Q2
  39. 640  IF Z = 1  THEN  GOTO 660
  40. 650 CO = TK *G1 -TR *G2 * EXP( -R *T): HOME : GOTO 670
  41. 660 PO = TR *(1 -G2) * EXP(R *T) -TK *(1 -G1): HOME 
  42. 670  PRINT : PRINT : PRINT "CURRENT STOCK PRICE = $";TK: PRINT "STRIKING PRICE = $";TR: PRINT "YEARS TO EXPIRATION = ";T: PRINT "VARIANCE = ";V: PRINT "INTEREST RATE = ";R1;"%"
  43. 680  PRINT : PRINT : IF Z = 1  THEN  GOTO 700
  44. 690  PRINT "OPTION CALL VALUE = $";CO: GOTO 710
  45. 700  PRINT "OPTION PUT VALUE = $";PO
  46. 710  PRINT "HEDGE RATIO = ";Q1: GOTO 750
  47. 720  INPUT "ENTER STOCK HIGH FOR PAST YEAR ";SH: INPUT "ENTER STOCK LOW FOR PAST YEAR ";SL:V = (SH -SL)/(.5 *(SH +SL)): RETURN 
  48. 750  PRINT : PRINT : PRINT : PRINT "HIT ANY KEY TO CONTINUE": GET A9$: PRINT A9$: HOME : CLEAR : GOTO 2000
  49. 799  PRINT "             ROI ON OPTIONS": PRINT : PRINT : PRINT "NOTE THAT A $27 OPTION COMMISSION RATE": PRINT "IS ASSUMED": PRINT : PRINT 
  50. 800  INPUT "ENTER UNDERLYING PRICE PER SHARE ";C: INPUT "ENTER COMISSION PER SHARE ";B:B = B *100: INPUT "ENTER STRIKING PRICE ";S
  51. 810  INPUT "ENTER WEEKS UNTIL OPTION EXPIRES ";W: INPUT "ENTER PREMIUM PER SHARE ";P: INPUT "ENTER MARGIN INTEREST RATE ";I
  52. 815 R = .5 *((C *100 +B) -(P *100 -27) *2)
  53. 816 PR = ((S *100 -B) +(P *100 -27)) -((C *100 +B) +(W/53 *I *(C *100 +B) *.5))
  54. 820 SR = PR *100/R:AR = SR/(W/52):TI = W/52 *I *(C *100 +B) *.5
  55. 825 SR = ( INT(SR *1000))/1000:AR = ( INT(AR *1000))/1000
  56. 830  PRINT : PRINT : PRINT : PRINT "REQUIRED CAPITAL = $";R: PRINT "PROFIT = $";PR: PRINT "ROI = ";SR;"%": PRINT "ANNUALIZE ROI = ";AR;"%": PRINT "INTEREST PAYMENT = $";TI
  57. 840  PRINT : PRINT : PRINT : PRINT "HIT ANY KEY TO CONTINUE": GET A9$: PRINT A9$: HOME : CLEAR : GOTO 2000
  58. 850  PRINT "OPTION STRADDLES (A STRADDLE IS THE SIMULTANEOUS BUY AND SELL OF AN OPTION": PRINT "ON THE SAME UNDERLYING STOCK)": PRINT : PRINT : PRINT 
  59. 860  INPUT "ENTER PRICE OF UNDERLYING STOCK ";N1: INPUT "ENTER PRICE OF BOUGHT OPTION ";N2: INPUT "ENTER STRIKING PRICE OF BOUGHT OPTION ";N3: PRINT : PRINT : PRINT 
  60. 870  INPUT "ENTER PRICE OF SOLD OPTION ";N4: INPUT "ENTER STRIKING PRICE OF SOLD OPTION ";N5: PRINT : PRINT : PRINT : INPUT "HOW MANY OPTIONS SOLD ";N6: INPUT "HOW MANY OPTIONS BOUGHT ";N7: PRINT : PRINT 
  61. 875  IF N7 < >N6 GOTO 880
  62. 876  HOME : PRINT "THEN NUMBER OF BUYS CANNOT EQUAL THE": PRINT "NUMBER OF SELLS.  TRY AGAIN.": PRINT : PRINT : GOTO 860
  63. 880 U = (N7 *(N2 +N3) -N6 *(N5 +N4))/(N7 -N6):PU = 100 *((U -N1)/N1):L = (N7 *(N2 +N3) -N6 *N4)/N7
  64. 883 ND = 100 *(N6 *N4 -N7 *N2):MT = 100 *(N6 -N7) *(1.3 *N1 -N5): IF MT <250  THEN MT = 250
  65. 886 MN = (N7 *(N5 -N3 -N2) +N6 *N4) *100:MP = MN/(N7 *N2 -N6 *N4 +MT/100): IF ND >0  THEN L = 0
  66. 889  HOME 
  67. 890  PRINT "UPSIDE BREAKEVEN POINT = $";U: PRINT "% MOVE IN STOCK TO BREAKEVEN = ";( INT(PU *1000))/1000;"%"
  68. 900  PRINT "LOWSIDE BREAKEVEN POINT = $";L: PRINT "NET CREDIT TO ACCOUNT = $";ND: PRINT "MAINTENANCE REQUIRMENT = $";MT
  69. 910  PRINT "MAXIMUM PROFIT = $";MN: PRINT "ROI = ";( INT(MP *1000))/1000;"%"
  70. 930  PRINT : PRINT : PRINT : PRINT "HIT ANY KEY TO CONTINUE": GET A9$: PRINT A9$: HOME : CLEAR : GOTO 2000
  71. 950  PRINT "     AFTER TAX YIELD OF A BOND": PRINT : PRINT : PRINT 
  72. 960  INPUT "FACE VALUE $";FV: INPUT "AMOUNT PAID PER BOND $";AP: INPUT "DATE BOUGHT (M,D,Y) ";M1,D1,Y1
  73. 970  INPUT "DATE OF MATURITY (M,D,Y) ";M2,D2,Y2: INPUT "PERCENT INTEREST RATE ";IR
  74. 980  INPUT "AMOUNT BORROWED $";AB:IR = IR/100: INPUT "INTEREST RATE ON BORROWINGS ";IB:IB = IB/100
  75. 990  INPUT "BOND EXEMPT FROM FEDERAL TAX (Y/N)? ";FE$(1)
  76. 991  INPUT "BOND EXEMPT FROM STATE TAX   (Y/N)? ";FE$(2)
  77. 993  INPUT "BOND EXEMPT FROM LOCAL TAX   (Y/N)? ";FE$(3): INPUT "PERCENT FEDERAL TAX BRACKET ";FB(1):FB(1) = FB(1)/100
  78. 1000  INPUT "PERCENT STATE TAX BRACKET ";FB(2):FB(2) = FB(2)/100
  79. 1001  INPUT "PERCENT LOCAL TAX BRACKET ";FB(3):FB(3) = FB(3)/100
  80. 1010  INPUT "PERCENT ANNUAL INFLATION ";FI: INPUT "COMMISSION/OVERHEAD PER BOND $";C0: INPUT "NUMBER BONDS BOUGHT ";QU
  81. 1020  GOSUB 2100
  82. 1021 FI = ((FI/100)/365) *N:IB = (IB/365) *N:IR = (IR/365)
  83. 1030  FOR I = 1 TO 3
  84. 1040 TS = TS +((AB *IB) *FB(I))
  85. 1050  NEXT I
  86. 1060  PRINT "GROSS CASH OUTPUT"
  87. 1070  PRINT "    - BOND PURCHASE      $";AP *QU
  88. 1080  PRINT "    - INTEREST PAYMENTS  $";( INT((AB *IB) *100))/100
  89. 1090  PRINT "    - COMMISSION/OHEAD   $";C0 *QU
  90. 1100 GO = (AP *QU) +(AB *IB) +(C0 *QU):GO = ( INT(GO *100))/100
  91. 1101  PRINT "              SUBTOTAL   $";GO
  92. 1110  PRINT "GROSS CASH INPUT"
  93. 1115 IR(1) = (IR *N) *(AP *QU):IR(1) = ( INT(IR(1) *100))/100
  94. 1120  PRINT "    - TRUE INTEREST      $";IR(1)
  95. 1125 TS = ( INT(TS *100))/100
  96. 1130  PRINT "    - TAX SAVINGS        $";TS
  97. 1140  PRINT "    - SALE AT MATURITY   $";FV *QU
  98. 1150 GI = IR(1) +TS +(FV *QU)
  99. 1155  PRINT "              SUBTOTAL   $";GI
  100. 1160  PRINT "OFFSETS"
  101. 1170  FOR I = 1 TO 3
  102. 1180  IF FE$(I) = "N"  THEN TX(I) = FB(I) *(((IR *N) *AP) *QU)
  103. 1185 TX(I) = ( INT(TX(I) *100))/100:TT = TT +TX(I)
  104. 1190  NEXT I
  105. 1200  PRINT "    - FEDERAL TAX       $";TX(1)
  106. 1210  PRINT "    - STATE TAX         $";TX(2)
  107. 1230  PRINT "    - STATE TAX         $";TX(3)
  108. 1240  PRINT "               SUBTOTAL $";TT
  109. 1250  PRINT : PRINT 
  110. 1255 GP = ( INT(GI -GO +.5) *100)/100
  111. 1260  PRINT "GROSS PROFIT               = $";GP
  112. 1280  PRINT "NET PROFIT                 = $";( INT(GP -TT) *100)/100:NP = ((GI -GO) -TT) -(((FI/365) *N) *((GI -GO) -TT))
  113. 1285 NP = NP -(AP *((FI/365) *N)):NP = ( INT((NP +.5) *100)/100)
  114. 1289  PRINT "NET PROFIT AFTER INFLATION = $";NP:AR = ((NP/(AP *QU))/N) *365:AR = AR *100
  115. 1290  PRINT "ANNUALIZED RETURN ON INVESTMENT = ";( INT(AR) *100)/100;"%"
  116. 1295  PRINT 
  117. 1300  INVERSE : PRINT "HIT ANY KEY TO CONTINUE": GET A9$: PRINT A9$: HOME : CLEAR : NORMAL : GOTO 2000
  118. 2000  HOME : PRINT "             MARKET EVALUATOR": PRINT : PRINT : PRINT 
  119. 2005  CLEAR 
  120. 2010  PRINT "             MENU": PRINT "1 = TREASURY BILL EVALUATOR": PRINT "2 = STOCK PORTFOLIO VALUATION": PRINT "3 = PUT AND CALL OPTION VALUE"
  121. 2011  PRINT "4 = CALL OPTION ROI": PRINT "5 = ROI ON AN OPTION STRADDLE "
  122. 2012  PRINT "6 = AFTER TAX YIELD ON A BOND"
  123. 2013  PRINT "7 = END PROGRAM"
  124. 2040  GET MN: PRINT MN: HOME : IF MN = 1  THEN  GOTO 10
  125. 2050  IF MN = 2  THEN  GOTO 80
  126. 2060  IF MN = 3  THEN  GOTO 500
  127. 2070  IF MN = 4  THEN  GOTO 799
  128. 2080  IF MN = 5  THEN  GOTO 850
  129. 2090  IF MN = 6  THEN  GOTO 950
  130. 2095  IF MN = 7  THEN  END 
  131. 2100  REM :DAYS BETWEEN DATES
  132. 2110 M = M1:D = D1:Y = Y1: GOSUB 2130
  133. 2120 N = AK:M = M2:D = D2:Y = Y2: GOSUB 2130
  134. 2125 N = AK -N: RETURN 
  135. 2130  ON M GOTO 2160,2180,2160,2240,2160,2240,2160,2160,2240,2160,2240,2160
  136. 2140  PRINT "INVALID DATE": DEL 0,5000
  137. 2150  RETURN 
  138. 2160  IF D >31  THEN  GOTO 2140
  139. 2170  GOTO 2250
  140. 2180  IF Y/4 < > INT(Y/4)  THEN  GOTO 2210
  141. 2190  IF Y/400 = ( INT(Y/400)  THEN  GOTO 2220
  142. 2200  IF Y/100 < > INT(Y/100)  THEN  GOTO 2220
  143. 2210  IF D >28  THEN  GOTO 2240
  144. 2220  IF D >29  THEN  GOTO 2140
  145. 2230  GOTO 2250
  146. 2240  IF D >30  THEN  GOTO 2140
  147. 2250  DATA  0,31,59,90,120,151,181,212,243,273,304,334
  148. 2260  RESTORE 
  149. 2265  FOR H = 1 TO M
  150. 2270  READ AK
  151. 2275  NEXT H
  152. 2280 AK = AK +Y *365 + INT(Y/4) +D +1 - INT(Y/100) + INT(Y/400)
  153. 2290  IF  INT(Y/4) < >Y/4  THEN  GOTO 2350
  154. 2310  IF Y/400 =  INT(Y/400)  THEN  GOTO 2340
  155. 2320  IF Y/100 =  INT(Y/100)  THEN  GOTO 2350
  156. 2330  IF M >2  THEN  GOTO 2350
  157. 2340 AK = AK -1
  158. 2350  RETURN